#include <bits/stdc++.h>
using namespace std;

int cnt = 0;

void Solve(int n, char a, char b, char c){
  if(n == 1){
    cout<<a<<"-->"<<b<<endl;
    cnt++;
  }
  else{
    Solve(n-1, a, c, b);
    cout<<a<<"-->"<<b<<endl;
    cnt++;
    Solve(n-1, c, b, a);
  }
}

int main(){

  int n;
  cin>>n;
  Solve(n, 'a', 'b', 'c');
  cout << cnt << endl;

  return 0;
}


//题目：汉诺塔问题
//
//描述：
//题目描述
//古代某寺庙中有一个梵塔，塔内有3个座A、B和C，
//座A上放着64个大小不等的盘，其中大盘在下，小盘在上。
//有一个和尚想把这64 个盘从座A搬到座B，但一次只能搬一个盘，
//搬动的盘只允许放在其他两个座上，且大盘不能压在小盘上。
//现要求用程序模拟该过程，并输出搬动步骤。
//
//输入格式
//一个整数n，表示盘子数量。
//
//输出格式
//m+1行。前面m行展示盘子移动方式。如：a-->b，表示把a座的一个盘子移到b座。最后一行一个数m，表示总的移动次数。
//
//输入样例
//2
//输出样例
//a-->c
//a-->b
//c-->b
//3